#ifndef VEKTOR
#include "vektor.h"
#endif
#include <math.h>
#include <stdio.h>
struct vektor vektorAddition(struct vektor v1, struct vektor v2 );
struct vektor vektorSubtraktion(struct vektor v1 ,struct vektor v2);
struct vektor vektorMultiplikationFloat(struct vektor v1,float faktor);
struct vektor vektorMultiplikationVektor(struct vektor v1,struct vektor v2);
struct vektor vektorNormalisieren(struct vektor v);
float vektorBetrag(struct vektor v);
struct vektor kreuzprodukt(struct vektor v1,struct vektor v2);
float punktprodukt(struct vektor v1,struct vektor v2);
void printVektor(struct vektor v);

struct vektor vektorAddition(struct vektor v1, struct vektor v2 ){

struct vektor v;
v.x=v1.x+v2.x;
v.y=v1.y+v2.y;
v.z=v1.z+v2.z;
return v;
}

struct vektor vektorSubtraktion(struct vektor v1 ,struct vektor v2){
struct vektor v;
v.x=v1.x-v2.x;
v.y=v1.y-v2.y;
v.z=v1.z-v2.z;
return v;
}

struct vektor vektorMultiplikationFloat(struct vektor v1,float faktor){
struct vektor v;
v.x=v1.x*faktor;
v.y=v1.y*faktor;
v.z=v1.z*faktor;
return v;
}
struct vektor vektorMultiplikationVektor(struct vektor v1,struct vektor v2){
struct vektor v;
v.x= v1.x*v2.x;
v.y= v1.y*v2.y;
v.z= v1.z*v2.z;
return v;
}

float vektorBetrag(struct vektor v){

return (sqrt(v.x*v.x + v.y*v.y+ v.z*v.z));
}

struct vektor vektorNormalisieren(struct vektor v){
float x = 1.0/ vektorBetrag(v);
return  vektorMultiplikationFloat(v,x);


//return v_erg;
}

float punktprodukt(struct vektor v1,struct vektor v2){

float x=v1.x*v2.x+v1.y*v2.y+v1.z*v2.z; 

return x;
}

struct vektor kreuzprodukt(struct vektor v1,struct vektor v2){
struct vektor v;
v.x=v1.y*v2.z - v1.z * v2.y;
v.y=-v1.x* v2.z + v1.z* v2.x;
v.z=v1.x*v2.y - v1.y*v2.x;

return v;
}
void printVektor(struct vektor v){


printf("\n x: %f\n y: %f\n z:%f\n",v.x, v.y, v.z);

}
